RDS for MySQL・Auroraの機能を改めて学び直す #AWSreInvent
こんにちは。ゲームソリューション部の出村です。
AWS re:Invent 2023のセッションである「Why AWS is the place to build and grow your MySQL workloads」のレポートをお届けします。
概要
AWS has a rich tradition of innovating in the MySQL space. AWS built Amazon Aurora, a cloud-native managed database with MySQL compatibility. AWS also offers Amazon RDS for MySQL for customers who prefer tighter version currency. Since their inception, Amazon Aurora MySQL-Compatible Edition and Amazon RDS for MySQL have continued to improve with continued innovation. Together, Aurora and Amazon RDS offer top-tier features for MySQL customers. In this session, learn how to take advantage of the continuous MySQL innovation provided by AWS and why AWS is the place to build and scale your MySQL workloads.
スピーカー
- Eugene Kawamoto : Product Leader, Amazon Aurora, AWS
- Aditya Samant : St. Database Specialist Solutions Architect, AWS
動画
内容について
ここでは、このセッションについてAuroraをメインに取り上げていきます。なお、セッションの全貌は動画にて視聴できますので、そちらをご覧下さい。
Amazon Aurora MySQLには以下のような利点があります。通常のMySQLと比較すると5倍のスループットである点、Multi-AZにより99.99%の可用性が担保されている、フルマネージドであるなど、数多くの利点があります。
Aurora MySQLは、演算とストレージの分離が考慮されています。運用開始時からマルチAZで実行されています(コストは1箇所分のみ)。自動修復機能を備えており、ユーザーが手動で何かする必要はありません。リードレプリカは15個までスケールアウトし、フェイルオーバーの対象となってます。可用性は99.99%となっています。
Aurora MySQLは今後も進化を続けていきます。では、どのようなサービスや機能があるのか、主に特徴的な機能についてみていきます。
まずはAurora Serverless v2です。キャパシティプランニングなど考える必要がありません。何かしらの計画や設定などせずとも、必要な時に必要な性能を発揮します。利用料金に関しても使った分だけの課金となります。
Auroraは複数のリージョンにまたがって同じデータが参照できるストレージが用意できます。これにより、世界中で自リージョンから同一データベースに対して読み書きできます。またレイテンシはリージョン内の速度であるため高速です。
データベースのクローンが高速になりました(瞬時に終わります)。検証のために本番サーバーをクローンする、特定時間のレポートを作成するといった処理を行うのに時間がかからないので、より気軽に行えます。
Auroraは機械学習のための改良も行われています。Amazon SageMakerからAuroraへの参照が直接行えるようになりました。そのため、SageMakerからSQLを発行すると該当するデータが直接取得できます。その他にも、レイテンシーの低減、セキュリティなどさまざまな改良が行われています。
コストが予測可能なものとなるようAuroraのI/O(入出力)の最適化が行われました。この機能をONにすることで、I/Oコストがゼロとなり、演算性能とストレージのみが料金対象となります。ただ、この機能をONにした場合は、演算性能の料金とストレージの料金が追加となります。
Auroraに対して、ブルー・グリーンデプロイができます。これを利用することでダウンタイムを最低限を抑えて素早く安全にデータベースがアップデートできます。
書き込みの最適化が行われました。
従来のMySQLであれば、バッファに対して二重書き込みが行われていましたが、最近のハードウェアの信頼性向上により、その二重書き込みをスキップする機能を追加しました。これによって書き込み速度は向上しました。
また、書き込みは一度NVMeに対して行われた後にDBに書き込まれるため停電などといった障害にも強いです。この機能はMySQL 8.0.30以上で利用できます。
どれだけ高速になったかはスライドのグラフをみると分かります。このように書き込み量が増えるほど、その効果が大きくなるのがよく分かります。
読み込みの最適化も行われています。MySQLは、複雑なクエリー、Group by、Order byといったクエリーを実行する際にはテンポラリのテーブルを利用します。このテンポラリのテーブルは、従来はAmazon EBSを使用してましたが、これをNVMeを使用するように変更しました。結果、速度が2倍となりました。
最後に
Auroraはゲーム開発においては、かなりの確率で利用されるサービスです。Aurora Serverlessといったような大きなアップデートに注目が集まりがちですが、それ以外にもアップデートにより、いろいろ便利に、高速になっていますので、そういった情報も集めつつプロジェクトに役立てていければと考えてます。